This invention relates generally to reutilization of existing software, and more specifically, to methods and systems for executing software applications (e.g., certified software applications) using hardware abstraction.
Existing software applications are associated with hundreds of billions of lines of source code that have been written over time. Such source code is generally converted (e.g., compiled) into object code that is executable by a particular physical hardware platform. Physical hardware devices eventually become obsolete. Once this hardware obsolescence occurs, it may no longer be feasible to acquire a particular hardware platform even if the desired functionality remains in the original design. The producer of a system typically has no control over when a hardware manufacture decides to discontinue production of their hardware chips. Accordingly, using traditional software development and delivery methods, a software application that is associated with a specific hardware platform may have to be re-implemented (e.g., rewritten) when the target hardware platform becomes obsolete, especially if the source code of the software application is no longer available.
Further, some software applications must be certified with respect to a target hardware platform prior to use of the software application in a mission-critical context. Certification of such software on a new hardware platform may introduce significant delay and/or cost into the process of delivering the software for use while adding no additional functional value.